
package td3.Modele;

/** La classe Plateau qui possède des attributs de longueur, largeur pour le grille, le joueur en cours, le gagnant du jeu, et le nombre de coups joués
 *
 * @author fredericdasilva
 */
public abstract class Plateau {
    public int longueur;
    public int largeur;
    public int etatIdPlateau [][];
    public int joueurencours;
    public int gagnantId;
    public int nbCoups;
    
    /** Le constructeur de Plateau créé la grille de taille adéquate, initialise le nombre de coups, le gagnat et le joueur en cours
     *
     * @param _longueur entier --> les lignes
     * @param _largeur entier --> les colonnes 
     */
    public Plateau(int _longueur, int _largeur)
    {
        longueur=_longueur;
        largeur=_largeur;
        etatIdPlateau= new int [longueur][largeur];
        joueurencours=0;
        gagnantId=0;
        nbCoups=0;
        
    }
    
    /** Permet d'initialiser chaque case de la grille du plateau
     *
     */
    public abstract void initialiser();
    /**Permet de renvoyer le coup appliquable par le joueur Id sur le plateau
     *
     * @param coup un Coup
     * @param id  entier : Id du Joueur 
     * @return Coup possible à appliquer  
     */
    public  Coup appliquerCoupPuissance4(Coup coup, int id){
        return null;
    }
    
    /** Applique le Coup du joueur Id à la grille du Plateau
     *
     * @param coup un Coup
     * @param id   entier : Id du Joueur 
     */
    public abstract void appliquerCoup(Coup coup, int id);
    
    /** Permet d'afficher l'état de la grille
     *
     * @return la grille en chaîne de caractère
     */
    @Override
    public String toString(){
        String S;
        S="";
        for(int i=0; i < longueur; i++) {
            S+="[";
            for(int j=0; j < largeur; j++) {
                S+= "    "+etatIdPlateau[i][j] + "\t" ;
            }
            
            S+="]\n";
        }
        return S;
    }
    
}
